home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / asxsrc.arc / M09PST.C < prev    next >
C/C++ Source or Header  |  1989-08-25  |  9KB  |  328 lines

  1. /* m09pst.c */
  2.  
  3. /*
  4.  * (C) Copyright 1989
  5.  * All Rights Reserved
  6.  *
  7.  * Alan R. Baldwin
  8.  * 721 Berkeley St.
  9.  * Kent, Ohio  44240
  10.  */
  11.  
  12. #include <stdio.h>
  13. #include <setjmp.h>
  14. #include "asm.h"
  15. #include "6809.h"
  16.  
  17. struct    mne    mne[] = {
  18.  
  19.     /* machine */
  20.  
  21.     NULL,    ".setdp",    S_SDP,        0,    0,
  22.  
  23.     /* system */
  24.  
  25.     NULL,    "CON",        S_ATYP,        0,    A_CON,
  26.     NULL,    "OVR",        S_ATYP,        0,    A_OVR,
  27.     NULL,    "REL",        S_ATYP,        0,    A_REL,
  28.     NULL,    "ABS",        S_ATYP,        0,  A_ABS|A_OVR,
  29.  
  30.     NULL,    ".byte",    S_BYTE,        0,    0,
  31.     NULL,    ".db",        S_BYTE,        0,    0,
  32.     NULL,    ".word",    S_WORD,        0,    0,
  33.     NULL,    ".dw",        S_WORD,        0,    0,
  34.     NULL,    ".ascii",    S_ASCII,    0,    0,
  35.     NULL,    ".asciz",    S_ASCIZ,    0,    0,
  36.     NULL,    ".blkb",    S_BLK,        0,    1,
  37.     NULL,    ".ds",        S_BLK,        0,    1,
  38.     NULL,    ".blkw",    S_BLK,        0,    2,
  39.     NULL,    ".page",    S_PAGE,        0,    0,
  40.     NULL,    ".title",    S_TITLE,    0,    0,
  41.     NULL,    ".sbttl",    S_SBTL,        0,    0,
  42.     NULL,    ".globl",    S_GLOBL,    0,    0,
  43.     NULL,    ".area",    S_DAREA,    0,    0,
  44.     NULL,    ".even",    S_EVEN,        0,    0,
  45.     NULL,    ".odd",        S_ODD,        0,    0,
  46.     NULL,    ".if",        S_IF,        0,    0,
  47.     NULL,    ".else",    S_ELSE,        0,    0,
  48.     NULL,    ".endif",    S_ENDIF,    0,    0,
  49.     NULL,    ".include",    S_INCL,        0,    0,
  50.     NULL,    ".radix",    S_RADIX,    0,    0,
  51.     NULL,    ".org",        S_ORG,        0,    0,
  52.     NULL,    ".module",    S_MODUL,    0,    0,
  53.  
  54.     /* 6800 Compatibility */
  55.  
  56.     NULL,    "ldaa",        S_ACC,        0,    0x86,
  57.     NULL,    "ldab",        S_ACC,        0,    0xC6,
  58.     NULL,    "oraa",        S_ACC,        0,    0x8A,
  59.     NULL,    "orab",        S_ACC,        0,    0xCA,
  60.     NULL,    "staa",        S_STR,        0,    0x87,
  61.     NULL,    "stab",        S_STR,        0,    0xC7,
  62.  
  63.     /* if this is changed, change struct opdata mc6800[] */
  64.  
  65.     NULL,    "aba",        S_6800,        0,    0,
  66.     NULL,    "cba",        S_6800,        0,    1,
  67.     NULL,    "clc",        S_6800,        0,    2,
  68.     NULL,    "cli",        S_6800,        0,    3,
  69.     NULL,    "clv",        S_6800,        0,    4,
  70.     NULL,    "des",        S_6800,        0,    5,
  71.     NULL,    "dex",        S_6800,        0,    6,
  72.     NULL,    "ins",        S_6800,        0,    7,
  73.     NULL,    "inx",        S_6800,        0,    8,
  74.     NULL,    "psha",        S_6800,        0,    9,
  75.     NULL,    "pshb",        S_6800,        0,    10,
  76.     NULL,    "pula",        S_6800,        0,    11,
  77.     NULL,    "pulb",        S_6800,        0,    12,
  78.     NULL,    "sba",        S_6800,        0,    13,
  79.     NULL,    "sec",        S_6800,        0,    14,
  80.     NULL,    "sei",        S_6800,        0,    15,
  81.     NULL,    "sev",        S_6800,        0,    16,
  82.     NULL,    "tab",        S_6800,        0,    17,
  83.     NULL,    "tap",        S_6800,        0,    18,
  84.     NULL,    "tba",        S_6800,        0,    19,
  85.     NULL,    "tpa",        S_6800,        0,    20,
  86.     NULL,    "tsx",        S_6800,        0,    21,
  87.     NULL,    "txs",        S_6800,        0,    22,
  88.     NULL,    "wai",        S_6800,        0,    23,
  89.  
  90.     /* 6809 */
  91.  
  92.     NULL,    "sty",        S_STR1,        0,    0x8F,
  93.     NULL,    "sts",        S_STR1,        0,    0xCF,
  94.  
  95.     NULL,    "sta",        S_STR,        0,    0x87,
  96.     NULL,    "stb",        S_STR,        0,    0xC7,
  97.     NULL,    "std",        S_STR,        0,    0xCD,
  98.     NULL,    "stx",        S_STR,        0,    0x8F,
  99.     NULL,    "stu",        S_STR,        0,    0xCF,
  100.     NULL,    "jsr",        S_STR,        0,    0x8D,
  101.  
  102.     NULL,    "cmpu",        S_LR2,        0,    0x83,
  103.     NULL,    "cmps",        S_LR2,        0,    0x8C,
  104.  
  105.     NULL,    "cmpd",        S_LR1,        0,    0x83,
  106.     NULL,    "cmpy",        S_LR1,        0,    0x8C,
  107.     NULL,    "ldy",        S_LR1,        0,    0x8E,
  108.     NULL,    "lds",        S_LR1,        0,    0xCE,
  109.  
  110.     NULL,    "subd",        S_LR,        0,    0x83,
  111.     NULL,    "addd",        S_LR,        0,    0xC3,
  112.     NULL,    "cmpx",        S_LR,        0,    0x8C,
  113.     NULL,    "cpx",        S_LR,        0,    0x8C,
  114.     NULL,    "ldd",        S_LR,        0,    0xCC,
  115.     NULL,    "ldx",        S_LR,        0,    0x8E,
  116.     NULL,    "ldu",        S_LR,        0,    0xCE,
  117.  
  118.     NULL,    "leax",        S_LEA,        0,    0x30,
  119.     NULL,    "leay",        S_LEA,        0,    0x31,
  120.     NULL,    "leas",        S_LEA,        0,    0x32,
  121.     NULL,    "leau",        S_LEA,        0,    0x33,
  122.  
  123.     NULL,    "pshs",        S_PULS,        0,    0x34,
  124.     NULL,    "puls",        S_PULS,        0,    0x35,
  125.     NULL,    "pshu",        S_PULU,        0,    0x36,
  126.     NULL,    "pulu",        S_PULU,        0,    0x37,
  127.  
  128.     NULL,    "exg",        S_EXG,        0,    0x1E,
  129.     NULL,    "tfr",        S_EXG,        0,    0x1F,
  130.  
  131.     NULL,    "cwai",        S_CC,        0,    0x3C,
  132.     NULL,    "orcc",        S_CC,        0,    0x1A,
  133.     NULL,    "andcc",    S_CC,        0,    0x1C,
  134.  
  135.     NULL,    "swi3",        S_INH2,        0,    0x3F,
  136.     NULL,    "swi2",        S_INH1,        0,    0x3F,
  137.     NULL,    "swi1",        S_INH,        0,    0x3F,
  138.  
  139.     NULL,    "abx",        S_INH,        0,    0x3A,
  140.     NULL,    "asla",        S_INH,        0,    0x48,
  141.     NULL,    "aslb",        S_INH,        0,    0x58,
  142.     NULL,    "asra",        S_INH,        0,    0x47,
  143.     NULL,    "asrb",        S_INH,        0,    0x57,
  144.     NULL,    "clra",        S_INH,        0,    0x4F,
  145.     NULL,    "clrb",        S_INH,        0,    0x5F,
  146.     NULL,    "coma",        S_INH,        0,    0x43,
  147.     NULL,    "comb",        S_INH,        0,    0x53,
  148.     NULL,    "daa",        S_INH,        0,    0x19,
  149.     NULL,    "deca",        S_INH,        0,    0x4A,
  150.     NULL,    "decb",        S_INH,        0,    0x5A,
  151.     NULL,    "inca",        S_INH,        0,    0x4C,
  152.     NULL,    "incb",        S_INH,        0,    0x5C,
  153.     NULL,    "lsla",        S_INH,        0,    0x48,
  154.     NULL,    "lslb",        S_INH,        0,    0x58,
  155.     NULL,    "lsra",        S_INH,        0,    0x44,
  156.     NULL,    "lsrb",        S_INH,        0,    0x54,
  157.     NULL,    "mul",        S_INH,        0,    0x3D,
  158.     NULL,    "nega",        S_INH,        0,    0x40,
  159.     NULL,    "negb",        S_INH,        0,    0x50,
  160.     NULL,    "nop",        S_INH,        0,    0x12,
  161.     NULL,    "rola",        S_INH,        0,    0x49,
  162.     NULL,    "rolb",        S_INH,        0,    0x59,
  163.     NULL,    "rora",        S_INH,        0,    0x46,
  164.     NULL,    "rorb",        S_INH,        0,    0x56,
  165.     NULL,    "rti",        S_INH,        0,    0x3B,
  166.     NULL,    "rts",        S_INH,        0,    0x39,
  167.     NULL,    "sex",        S_INH,        0,    0x1D,
  168.     NULL,    "swi",        S_INH,        0,    0x3F,
  169.     NULL,    "sync",        S_INH,        0,    0x13,
  170.     NULL,    "tsta",        S_INH,        0,    0x4D,
  171.     NULL,    "tstb",        S_INH,        0,    0x5D,
  172.  
  173.     NULL,    "lbrn",        S_LBRA,        0,    0x21,
  174.     NULL,    "lbhi",        S_LBRA,        0,    0x22,
  175.     NULL,    "lbls",        S_LBRA,        0,    0x23,
  176.     NULL,    "lblos",    S_LBRA,        0,    0x23,
  177.     NULL,    "lbcc",        S_LBRA,        0,    0x24,
  178.     NULL,    "lbhs",        S_LBRA,        0,    0x24,
  179.     NULL,    "lbhis",    S_LBRA,        0,    0x24,
  180.     NULL,    "lbcs",        S_LBRA,        0,    0x25,
  181.     NULL,    "lblo",        S_LBRA,        0,    0x25,
  182.     NULL,    "lbne",        S_LBRA,        0,    0x26,
  183.     NULL,    "lbeq",        S_LBRA,        0,    0x27,
  184.     NULL,    "lbvc",        S_LBRA,        0,    0x28,
  185.     NULL,    "lbvs",        S_LBRA,        0,    0x29,
  186.     NULL,    "lbpl",        S_LBRA,        0,    0x2A,
  187.     NULL,    "lbmi",        S_LBRA,        0,    0x2B,
  188.     NULL,    "lbge",        S_LBRA,        0,    0x2C,
  189.     NULL,    "lblt",        S_LBRA,        0,    0x2D,
  190.     NULL,    "lbgt",        S_LBRA,        0,    0x2E,
  191.     NULL,    "lble",        S_LBRA,        0,    0x2F,
  192.  
  193.     NULL,    "lbra",        S_LBSR,        0,    0x16,
  194.     NULL,    "lbsr",        S_LBSR,        0,    0x17,
  195.  
  196.     NULL,    "neg",        S_SOP,        0,    0x40,
  197.     NULL,    "com",        S_SOP,        0,    0x43,
  198.     NULL,    "lsr",        S_SOP,        0,    0x44,
  199.     NULL,    "ror",        S_SOP,        0,    0x46,
  200.     NULL,    "asr",        S_SOP,        0,    0x47,
  201.     NULL,    "asl",        S_SOP,        0,    0x48,
  202.     NULL,    "lsl",        S_SOP,        0,    0x48,
  203.     NULL,    "rol",        S_SOP,        0,    0x49,
  204.     NULL,    "dec",        S_SOP,        0,    0x4A,
  205.     NULL,    "inc",        S_SOP,        0,    0x4C,
  206.     NULL,    "tst",        S_SOP,        0,    0x4D,
  207.     NULL,    "clr",        S_SOP,        0,    0x4F,
  208.     NULL,    "jmp",        S_SOP,        0,    0x4E,
  209.  
  210.     NULL,    "suba",        S_ACC,        0,    0x80,
  211.     NULL,    "subb",        S_ACC,        0,    0xC0,
  212.     NULL,    "cmpa",        S_ACC,        0,    0x81,
  213.     NULL,    "cmpb",        S_ACC,        0,    0xC1,
  214.     NULL,    "sbca",        S_ACC,        0,    0x82,
  215.     NULL,    "sbcb",        S_ACC,        0,    0xC2,
  216.     NULL,    "anda",        S_ACC,        0,    0x84,
  217.     NULL,    "andb",        S_ACC,        0,    0xC4,
  218.     NULL,    "bita",        S_ACC,        0,    0x85,
  219.     NULL,    "bitb",        S_ACC,        0,    0xC5,
  220.     NULL,    "lda",        S_ACC,        0,    0x86,
  221.     NULL,    "ldb",        S_ACC,        0,    0xC6,
  222.     NULL,    "eora",        S_ACC,        0,    0x88,
  223.     NULL,    "eorb",        S_ACC,        0,    0xC8,
  224.     NULL,    "adca",        S_ACC,        0,    0x89,
  225.     NULL,    "adcb",        S_ACC,        0,    0xC9,
  226.     NULL,    "ora",        S_ACC,        0,    0x8A,
  227.     NULL,    "orb",        S_ACC,        0,    0xCA,
  228.     NULL,    "adda",        S_ACC,        0,    0x8B,
  229.     NULL,    "addb",        S_ACC,        0,    0xCB,
  230.  
  231.     NULL,    "bra",        S_BRA,        0,    0x20,
  232.     NULL,    "brn",        S_BRA,        0,    0x21,
  233.     NULL,    "bhi",        S_BRA,        0,    0x22,
  234.     NULL,    "bls",        S_BRA,        0,    0x23,
  235.     NULL,    "blos",        S_BRA,        0,    0x23,
  236.     NULL,    "bcc",        S_BRA,        0,    0x24,
  237.     NULL,    "bhs",        S_BRA,        0,    0x24,
  238.     NULL,    "bhis",        S_BRA,        0,    0x24,
  239.     NULL,    "bcs",        S_BRA,        0,    0x25,
  240.     NULL,    "blo",        S_BRA,        0,    0x25,
  241.     NULL,    "bne",        S_BRA,        0,    0x26,
  242.     NULL,    "beq",        S_BRA,        0,    0x27,
  243.     NULL,    "bvc",        S_BRA,        0,    0x28,
  244.     NULL,    "bvs",        S_BRA,        0,    0x29,
  245.     NULL,    "bpl",        S_BRA,        0,    0x2A,
  246.     NULL,    "bmi",        S_BRA,        0,    0x2B,
  247.     NULL,    "bge",        S_BRA,        0,    0x2C,
  248.     NULL,    "blt",        S_BRA,        0,    0x2D,
  249.     NULL,    "bgt",        S_BRA,        0,    0x2E,
  250.     NULL,    "ble",        S_BRA,        0,    0x2F,
  251.     NULL,    "bsr",        S_BRA,        S_END,    0x8D
  252. };
  253.  
  254. struct opdata mc6800[] = {
  255.  
  256.     0x34, 0x04,    /*    pshs    b    ;aba    */
  257.     0xab, 0xe0,    /*    adda    ,s+    */
  258.  
  259.     0x34, 0x04,    /*    pshs    b    ;cba    */
  260.     0xa1, 0xe0,    /*    cmpa    ,s+    */
  261.  
  262.     0x1c, 0xfe,    /*    andcc    #0xFE    ;clc    */
  263.     0x00, 0x00,
  264.  
  265.     0x1c, 0xef,    /*    andcc    #0xEF    ;cli    */
  266.     0x00, 0x00,
  267.  
  268.     0x1c, 0xfd,    /*    andcc    #0xFD    ;clv    */
  269.     0x00, 0x00,
  270.  
  271.     0x32, 0x7f,    /*    leas    -1,s    ;des    */
  272.     0x00, 0x00,
  273.  
  274.     0x30, 0x1f,    /*    leax    -1,x    ;dex    */
  275.     0x00, 0x00,
  276.  
  277.     0x32, 0x61,    /*    leas    1,s    ;ins    */
  278.     0x00, 0x00,
  279.  
  280.     0x30, 0x01,    /*    leax    1,x    ;inx    */
  281.     0x00, 0x00,
  282.  
  283.     0x34, 0x02,    /*    pshs    a    ;psha    */
  284.     0x00, 0x00,
  285.  
  286.     0x34, 0x04,    /*    pshs    b    ;pshb    */
  287.     0x00, 0x00,
  288.  
  289.     0x35, 0x02,    /*    puls    a    ;pula    */
  290.     0x00, 0x00,
  291.  
  292.     0x35, 0x04,    /*    puls    b    ;pulb    */
  293.     0x00, 0x00,
  294.  
  295.     0x34, 0x04,    /*    pshs    b    ;sba    */
  296.     0xa0, 0xe0,    /*    suba    ,s+    */
  297.  
  298.     0x1a, 0x01,    /*    orcc    #0x01    ;sec    */
  299.     0x00, 0x00,
  300.  
  301.     0x1a, 0x10,    /*    orcc    #0x10    ;sei    */
  302.     0x00, 0x00,
  303.  
  304.     0x1a, 0x02,    /*    orcc    #0x02    ;sev    */
  305.     0x00, 0x00,
  306.  
  307.     0x1f, 0x89,    /*    tfr    a,b    ;tab    */
  308.     0x4d, 0x00,    /*    tsta